package org.eiahe.hr.attendance.service;

import org.eiahe.hr.attendance.domain.bo.AttendanceRecordBo;
import org.eiahe.hr.attendance.domain.vo.AttendanceRecordVo;
import org.ehe.common.mybatis.core.page.PageQuery;
import org.ehe.common.mybatis.core.page.TableDataInfo;

import java.time.LocalDate;
import java.util.Collection;
import java.util.List;

/**
 * 考勤明细Service接口
 *
 * @author zhangnn
 */
public interface IAttendanceRecordService {

    /**
     * 查询考勤明细
     */
    AttendanceRecordVo queryById(Long recordId);

    /**
     * 查询考勤明细列表
     */
    TableDataInfo<AttendanceRecordVo> queryPageList(AttendanceRecordBo bo, PageQuery pageQuery);

    /**
     * 查询考勤明细列表
     */
    List<AttendanceRecordVo> queryList(AttendanceRecordBo bo);

    /**
     * 新增考勤明细
     */
    Boolean insertByBo(AttendanceRecordBo bo);

    /**
     * 修改考勤明细
     */
    Boolean updateByBo(AttendanceRecordBo bo);

    /**
     * 校验并批量删除考勤明细信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);

    /**
     * 合并重复打卡记录
     * 保留最早的打卡记录,删除重复的
     *
     * @param date 处理日期(null则处理所有)
     * @return 合并的记录数
     */
    Integer mergeDuplicateClockRecords(LocalDate date);

    /**
     * 员工30天内考勤异常列表
     * @param bo
     * @param pageQuery
     * @return
     */
    TableDataInfo<AttendanceRecordVo> listMonth(AttendanceRecordBo bo, PageQuery pageQuery);
}
